#include <iostream>
#include <cstdio>
using namespace std;
bool vis[15];//vis[i]=true/false i有出现过/没出现过 
void dfs(int done,int n,int ranks[]){
	if(n==done){
		for(int i=0;i<n;i++)
			printf("%5d",ranks[i]);
		cout<<endl;
	}else{
		for(int i=1;i<=n;i++){
			if(vis[i]==false){
				ranks[done]=i;
				vis[i]=true;
				dfs(done+1,n,ranks);
				//状态的回溯 
				vis[i]=false;
			}
		}
	}
}

int main(){
	int n;
	int ranks[15]={0};
	cin>>n;
	dfs(0,n,ranks); 
    return 0;
}
